package com.tiem_files.service;

import com.tiem_files.model.User;
import com.tiem_files.model.UserFocus;

import java.util.List;
import java.util.Map;

public interface UserService {

    /**
     * 通过用户名找到对象
     * @param username 用户名
     * @return User 对象
     */
    User finByName(String username);
    /**
     * 通过邮箱找到对象
     * @param email 邮箱
     * @return User 对象
     */
    User finByEmail(String email);
    /**
     * 通过邮箱或账号找到对象
     * @param email 邮箱
     * @param username 用户名
     * @return User 对象
     */
    boolean checkByEmailOrName(String email, String username);

    /**
     * 添加数据到数据库
     * @param user
     * @return
     */
    boolean addUser(User user);

    /**
     * 发送邮件
     * @param email
     * @return
     */
    String sendEmailCode(String email);

    /**
     * 重置密码
     * @param email 用户邮箱
     * @param password 新密码
     * @return
     */
    boolean resetPassword(String email, String password);

    /**
     * 查找用户基本信息
     * @param username 用户名
     * @return Map对象
     */
    Map<String, Object> findUserBaseInfo(String username);

    /**
     * 查找用户个人中心数据信息
     * @param id 用户ID
     * @return Map对象
     */
    Map<String, Object> getUserInfo(String id);

    /**
     * 更新用户登录时间
     * @param userId
     */
    void updateLoginTime(Integer userId);

    /**
     *分页查询用户列表信息
     * @param userId 当前用户ID
     * @param currentPage 当前页面
     * @param name  查询用户姓名
     * @return  列表对象
     */
    List<Map<String,Object>> getUserList(String userId,int currentPage, String name);

    /**
     * 分页查询用户总数量
     * @param name 查询用户姓名
     * @return 总用户数
     */
    long getUserCount(String name);

    /**
     * 关注用户
     * @param userId 当前登录的用户ID
     * @param ufId 关注的ID
     * @return
     */
    boolean followUser(String userId, String ufId);

    /**
     *根据用户关注对应用户ID查找信息
     * @param userId 登录的用户ID
     * @param ufId 关注的用户ID
     * @return 关注对象信息
     */
    UserFocus getFollowUser(String userId, String ufId);

    /**
     * 根据关注表主键ID取消关注
     * @param id 主键ID
     * @return
     */
    boolean unFollowUser(Integer id);

    /**
     * 更新图片
     * @param
     */
    void uploadImg(String userId,String path);




}
